/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ejemplo.bt.movimientos.services;

import com.core.bs.BusinessException;
import com.core.pf.PersistentBroker;
import com.core.pf.PersistentException;
import com.core.pf.RetrieveCriteria;
import com.ejemplo.bt.cuentas.vo.Cuenta;
import com.ejemplo.bt.movimientos.vo.Movimiento;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

/**
 *
 * @author Usuario
 */
public class MovimientoServices {
    
    
    // Obtener un mov
    public Movimiento obtenerMovimiento(long idCuenta) throws BusinessException {
        try {
            RetrieveCriteria criteria = new RetrieveCriteria(Movimiento.class);
            criteria.addPkToCriteria(new Long(idCuenta));
            
            PersistentBroker broker = new PersistentBroker();
            Movimiento movimiento = (Movimiento) broker.retrieveObject(criteria);
            
            return movimiento;
        }
        catch(PersistentException pex) {
            throw new BusinessException(pex);
        }        
    }
    
    
   // Obtener todos los movs
    public List<Movimiento> obtenerMovimientos(Cuenta c) throws BusinessException {
        try {
            Calendar cal = new GregorianCalendar();
            cal.add(Calendar.DATE, -30);
            Date f = new java.util.Date(cal.getTimeInMillis());
        
            RetrieveCriteria criteria = new RetrieveCriteria(Movimiento.class);
            
            criteria.addEqualToCriteria("cuenta", c);
            criteria.gratherOrEqualThan("fecha", f);
            
            criteria.addOrder("fecha", RetrieveCriteria.DESCENDING);

            PersistentBroker broker = new PersistentBroker();
            List<Movimiento> movs = broker.processCriteria(criteria);
            
            return movs;
        }
        catch(PersistentException pex) {
            throw new BusinessException(pex);
        }        
    }
    
     public List<Movimiento> obtenerMovimientosConfirmados(Cuenta c) throws BusinessException {
        try {
            Calendar cal = new GregorianCalendar();
            cal.add(Calendar.DATE, -30);
            Date f = new java.util.Date(cal.getTimeInMillis());
        
            RetrieveCriteria criteria = new RetrieveCriteria(Movimiento.class);
            
            criteria.addEqualToCriteria("cuenta", c);
            criteria.gratherOrEqualThan("fecha", f);
            criteria.addEqualToCriteria("confirmado", true);
            
            
            criteria.addOrder("fecha", RetrieveCriteria.DESCENDING);

            PersistentBroker broker = new PersistentBroker();
            List<Movimiento> movs = broker.processCriteria(criteria);
            
            return movs;
        }
        catch(PersistentException pex) {
            throw new BusinessException(pex);
        }        
    }


    // Salvar un mov
    public Movimiento salvarMovimiento(Movimiento mov) throws BusinessException {
        try {
            PersistentBroker broker = new PersistentBroker();
            
            broker.saveObject(mov);
            
            return mov;
        }
        catch(PersistentException pex) {
            throw new BusinessException(pex);
        }        
    }

    /*
     *
     * @param user
     * @param password
     * @return
     * @throws BusinessException
     * @throws RemoteException
     */
  /*  public Usuario obtenerUsuario(String documento, String pin)
			throws BusinessException {
	try {
	     RetrieveCriteria criteria = new RetrieveCriteria(Usuario.class);
	     criteria.addEqualToCriteria("documento", documento);
	     criteria.addEqualToCriteria("pin", pin);
             
	     PersistentBroker broker = new PersistentBroker();
	     List usuarios = broker.processCriteria(criteria);

	    // Usuario usuario = null;
             Usuario usuario = new Usuario();
	     if(usuarios.size() > 0)
	     	   usuario = (Usuario) usuarios.get(0);
	     else
	         throw new BusinessException("Login invalido\n");

	     return usuario;
        }
        catch(PersistentException pex) {
	            throw new BusinessException(pex);
        }
    }*/
}
